// Copyright 2019 GitBitEx.com
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

interface WatchItem {
    element: HTMLDivElement,
    callback: (state: boolean) => void,
    value: boolean
}

export class DomWatch {

    private static visibleItems: WatchItem[] = [];

    static visibleChange(element: HTMLDivElement, callback: (state: boolean) => void) {
        this.visibleItems.push({
            element: element, 
            callback: callback,
            value: false
        });
    }

    static visibleChanged() {
        
        setTimeout(() => {
            this.visibleItems.forEach((item: WatchItem) => {
                if (item.value != Boolean(item.element.offsetParent)) {
                    item.value = Boolean(item.element.offsetParent);
                    item.callback(item.value);
                }
            });
        })

    }


}